/**
 * Notes: 系统设置工具类
 * Date: 2021-03-15 19:20:00 
 */

const constants = require('./constant.js');
const util = require('./util.js');
const config = require('../../config/config.js');
const dbUtil = require('../database/db_util.js');

/**
 * 系统设置工具类
 */
class SetupUtil {

	/**
	 * 获取系统配置
	 * @param {string} key 配置项键名
	 * @param {string} def 默认值
	 * @param {boolean} isCache 是否使用缓存
	 * @returns {Promise<any>} 配置值
	 */
	static async get(key, def = '', isCache = false) {
		if (!key) return def;
		
		// 数据库查询
		try {
			let where = {
				SETUP_KEY: key
			};
			
			let setup = await dbUtil.getOne('setup', where);
			if (setup) {
				let val = setup.SETUP_VALUE;
				return val;
			} else {
				return def;
			}
		} catch (error) {
			console.error('获取系统配置失败:', error);
			return def;
		}
	}
	
	/**
	 * 设置系统配置
	 * @param {string} key 配置项键名
	 * @param {any} value 配置值
	 * @returns {Promise<boolean>} 是否设置成功
	 */
	static async set(key, value) {
		if (!key) return false;
		
		try {
			let where = {
				SETUP_KEY: key
			};
			
			let setup = await dbUtil.getOne('setup', where);
			if (setup) {
				// 更新
				await dbUtil.update('setup', where, {
					SETUP_VALUE: value,
					SETUP_EDIT_TIME: util.time()
				});
			} else {
				// 新增
				await dbUtil.insertOne('setup', {
					SETUP_KEY: key,
					SETUP_VALUE: value,
					SETUP_ADD_TIME: util.time(),
					SETUP_EDIT_TIME: util.time()
				});
			}
			
			return true;
		} catch (error) {
			console.error('设置系统配置失败:', error);
			return false;
		}
	}
}

module.exports = SetupUtil; 